IF exists(SELECT * FROM dbo.sysobjects WHERE name='leraarsEnTitularis' AND xtype='FN') 
BEGIN
	DROP FUNCTION leraarsEnTitularis
END
GO

CREATE function leraarsEnTitularis()
returns @resultaten table(
   naamcode char(4),
   achternaam varchar(50),
   voornaam varchar(50),
   functiebadge varchar(50),
   titKlas varchar(50))
begin
declare @hulpTit table
(
naamcode char(4),
klas varchar(100)
)

declare @tekst varchar(500)
declare @naamcode char(7)
declare @klas char(5)
declare @oudNaamcode char(7)


declare TitCursor cursor local for 
select naamcode,klas
  from titularisKlas
order by naamcode
for read only

set @tekst = ''

open TitCursor
fetch next from TitCursor into @naamcode,@klas
if (@@fetch_status=0)
begin
  set @oudNaamcode=@naamcode
  while (@@fetch_status=0)
  begin
	if (@oudNaamcode <> @naamcode)
	  begin
	    insert into @hulpTit(naamcode,klas)
            select @oudNaamcode,@tekst
	    set @tekst = @klas + ''
	    set @oudNaamcode = @naamcode	
	  end
   	else
   	set @tekst=@tekst + isnull(@klas,'') + '' 
  	fetch next from TitCursor into @naamcode,@klas
  end
  insert into @hulpTit(naamcode,klas)
  select @oudNaamcode,@tekst
end
close TitCursor
deallocate TitCursor

insert into @resultaten(naamcode,achternaam,voornaam,functiebadge,titKlas)
select distinct l.naamcode,l.achternaam,l.voornaam,l.functiebadge,isNull('klasleraar ' + t.klas,'') as titKlas
from @hulpTit as t left join
leraarsAdministratie as l
 on l.naamcode=t.naamcode
where l.lesopdracht like '1'
union
select l.naamcode,l.achternaam,l.voornaam,l.functiebadge,'' as titKlas from leraarsAdministratie as l
left join titularisKlas as t
on l.naamcode=t.naamcode where t.naamcode is null 

return
end